package com.chaoxi.picturebackend.api.aliyunai.model.Texttoimage;

import cn.hutool.core.annotation.Alias;
import lombok.Data;
import org.checkerframework.checker.units.qual.A;

import java.io.Serializable;
import java.util.List;

/**
 * 文字生成图片响应类
 */
@Data
public class TextToImageResponse implements Serializable {
    /**
     * 任务输出信息
     */
    private Output output;
    
    /**
     * 请求唯一标识
     */
    private String requestId;
    
    /**
     * 请求失败的错误码
     */
    private String code;
    
    /**
     * 请求失败的详细信息
     */
    private String message;
    
    /**
     * 输出信息统计
     */
    private Usage usage;

    @Data
    public static class Output implements Serializable {
        /**
         * 任务状态
         */
        private String taskStatus;
        
        /**
         * 任务ID
         */
        private String taskId;
        
        /**
         * 任务提交时间
         */
        private String submitTime;
        
        /**
         * 任务执行时间
         */
        private String scheduledTime;
        
        /**
         * 任务完成时间
         */
        private String endTime;
        
        /**
         * 任务结果列表
         */
        private List<Result> results;
        
        /**
         * 任务结果统计
         */
        private TaskMetrics taskMetrics;
    }
    
    @Data
    public static class Result implements Serializable {
        /**
         * 原始输入的prompt
         */
        private String origPrompt;
        
        /**
         * 实际使用的优化后prompt
         */
        private String actualPrompt;
        
        /**
         * 图像URL地址
         */
        private String url;
        
        /**
         * 请求失败的错误码
         */
        private String code;
        
        /**
         * 请求失败的详细信息
         */
        private String message;
    }
    
    @Data
    public static class TaskMetrics implements Serializable {
        /**
         * 总的任务数
         */
        private Integer total;
        
        /**
         * 任务状态为成功的任务数
         */
        private Integer succeeded;
        
        /**
         * 任务状态为失败的任务数
         */
        private Integer failed;
    }
    
    @Data
    public static class Usage implements Serializable {
        /**
         * 模型成功生成图片的数量
         */
        private Integer imageCount;
    }
}